Revit API · Referenz

Cheatsheet:
BIM-Daten

Kompakte Referenz für Parameter, Kategorien, Element-Kollektoren und Einheiten-Konvertierung in C# und Python.

C# / .NET Python / pyRevit
Zurück zur BIM-Werkzeugkiste
var param = elem.get_Parameter(BuiltInParameter.HOST_WIDTH_PARAM);
double value = param.AsDouble();
new FilteredElementCollector(doc)

Parameter lesen & schreiben

Parameter sind das Herzstück von Revit. Sie speichern Werte wie Maße, Material oder Benutzerdaten.

Einheiten: Revit speichert Längen intern in Fuß. Immer konvertieren!

Parameter lesen

C#

C# — Parameter lesen
using Autodesk.Revit.DB;

public void ReadParameter(Element elem)
{
    Parameter param = elem.get_Parameter(
        BuiltInParameter.HOST_WIDTH_PARAM
    );
    
    if (param != null && !param.IsReadOnly)
    {
        double value = param.AsDouble();
        TaskDialog.Show("Wert", value.ToString());
    }
}

Python

Python — Parameter lesen
from Autodesk.Revit.DB import BuiltInParameter

param = elem.get_Parameter(BuiltInParameter.HOST_WIDTH_PARAM)
if param and not param.IsReadOnly:
    value = param.AsDouble()
    print(f"Wert: {value}")

Parameter setzen

C#

C# — Parameter setzen
using (Transaction t = new Transaction(doc, "Parameter setzen"))
{
    t.Start();

    Parameter param = elem.get_Parameter(
        BuiltInParameter.HOST_WIDTH_PARAM
    );
    if (param != null && !param.IsReadOnly)
        param.Set(1.2);  // Wert in Fuß

    t.Commit();
}

Python

Python — Parameter setzen
from Autodesk.Revit.DB import Transaction

with Transaction(doc, "Parameter setzen") as t:
    t.Start()
    param = elem.get_Parameter(BuiltInParameter.HOST_WIDTH_PARAM)
    if param and not param.IsReadOnly:
        param.Set(1.2)  # Wert in Fuß
    t.Commit()

Kategorien & BuiltIns

Verwende BuiltInCategory, um spezifische Elementtypen zu filtern.

BuiltInCategory Beschreibung Beispiel
OST_Walls Wände ElementCategoryFilter(BuiltInCategory.OST_Walls)
OST_Doors Türen ElementCategoryFilter(BuiltInCategory.OST_Doors)
OST_Windows Fenster ElementCategoryFilter(BuiltInCategory.OST_Windows)
OST_Furniture Möbel ElementCategoryFilter(BuiltInCategory.OST_Furniture)
OST_StructuralColumns Stützen ElementCategoryFilter(BuiltInCategory.OST_StructuralColumns)

FilteredElementCollector

Der effizienteste Weg, Elemente im Revit-Modell zu finden.

Alle Elemente einer Klasse finden

C#

C# — Alle Wände finden
FilteredElementCollector collector = new FilteredElementCollector(doc)
    .OfClass(typeof(Wall))
    .WhereElementIsNotElementType();

foreach (Wall wall in collector)
{
    TaskDialog.Show("Wand", wall.Name);
}

Python

Python — Alle Wände finden
from Autodesk.Revit.DB import Wall, FilteredElementCollector

walls = FilteredElementCollector(doc).OfClass(Wall)

for wall in walls:
    print(wall.Name)

Mehrere Filter kombinieren

C#

C# — Logischer UND-Filter
ElementCategoryFilter catFilter = new ElementCategoryFilter(
    BuiltInCategory.OST_Doors
);
ElementClassFilter classFilter = new ElementClassFilter(typeof(Door));

LogicalAndFilter combined = new LogicalAndFilter(catFilter, classFilter);

FilteredElementCollector collector = new FilteredElementCollector(doc)
    .WherePasses(combined);

Einheiten-Konvertierung

Revit-Intern: Länge = Fuß, Fläche = Quadratfuß, Volumen = Kubikfuß

C#

C# — Meter zu Fuß konvertieren
using Autodesk.Revit.DB;

// Meter zu Revit-Intern (Fuß)
double meters = 1.5;
double feet = UnitUtils.ConvertToInternalUnits(
    meters, UnitTypeId.Meters
);

// Revit-Intern zu Meter anzeigen
string display = UnitUtils.ConvertFromInternalUnits(
    feet, UnitTypeId.Meters
).ToString();

Elemente verwalten

Elemente löschen

C#

C# — Elemente löschen
List<ElementId> idsToDelete = new List<ElementId>();

foreach (Wall wall in collector)
{
    if (wall.Name.Contains("Alt"))
        idsToDelete.Add(wall.Id);
}

using (Transaction t = new Transaction(doc, "Löschen"))
{
    t.Start();
    doc.Delete(idsToDelete);
    t.Commit();
}

Häufige Fehler

Fehler Lösung
NullReferenceException Parameter nicht gefunden. Immer if (param != null) prüfen.
ArgumentException Ungültiger Parametername. BuiltInParameter Enum verwenden.
Falscher Einheitenwert Immer UnitUtils für Konvertierung nutzen.
Keine Änderung sichtbar Transaktion vergessen. t.Start() und t.Commit() prüfen.

Ressourcen